home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: MegaDisc / MegaDisc 02 (1987)(MegaDisc Digital Publishing)(AU)[WB].zip / MegaDisc 02 (1987)(MegaDisc Digital Publishing)(AU)[WB].adf / PROGRAMS / jukebox (.txt) < prev    next >
AmigaBASIC Source Code  |  1987-04-21  |  2KB  |  105 lines

  1. REM Jukebox by Ken Jones
  2. DEFINT a-z
  3. GOSUB init
  4. GOSUB notes
  5. sel: GOSUB selection
  6.      ON q GOSUB mary,silent,william,america,god
  7.      GOSUB song
  8.      STOP
  9.  
  10. song:
  11.      READ song$
  12.      IF song$="*" THEN sel
  13.      FOR i=1 TO LEN(song$) STEP 2
  14.      offset=INSTR(n$,MID$(song$,i,1))
  15.      IF MID$(song$,i+1,1)="S" THEN D=16 : GOTO SK
  16.      D=VAL(MID$(song$,i+1,1))
  17. SK:  IF offset<4 THEN n=(offset-1)*2+1
  18.      IF offset>3 AND offset<8 THEN n=(offset-1)*2
  19.      IF MID$(song$,i+2,1)="#" THEN n=n+1
  20.      IF MID$(song$,i+2,1)="-" THEN n=n-1
  21.      IF offset=10 THEN n=13 
  22.      IF offset=11 THEN o=D : GOTO jp
  23.      IF offset=8 OR offset=9 THEN jp
  24.      DUR=tempo*4/D
  25.      GOSUB playsound
  26. jp:    NEXT i
  27.        GOTO song 
  28. loop:  GOTO loop
  29.  
  30. playsound:
  31.       SOUND note(o,n),DUR,255,0
  32.       RETURN
  33.  
  34. mary:    RESTORE tune1 : tempo=10.42 : REM quarter beat
  35.          RETURN
  36. silent:  RESTORE tune2 : tempo=18.75
  37.          RETURN
  38. william: RESTORE tune3 : tempo=9.38
  39.          RETURN
  40. america: RESTORE tune4 : tempo=10.42
  41.          RETURN
  42. god:     RESTORE tune5:  tempo=10.42
  43.          RETURN       
  44. selection:
  45.        COLOR 6,0 : CLS
  46.        LOCATE 1,31 : PRINT "JUKEBOX SELECTION"
  47.        LOCATE 4,30 : PRINT "1- mary had a little lamb"
  48.        LOCATE 5,30 : PRINT "2- silent night"
  49.        LOCATE 6,30 : PRINT "3- william tell"
  50.        LOCATE 7,30 : PRINT "4- america the beautiful"
  51.        LOCATE 8,30 : PRINT "5- god save the queen"
  52.        COLOR 3 : PRINT "tune number >>>"
  53. stay:  q$=INKEY$ : IF q$="" THEN stay
  54.        q=VAL(q$) : IF q<1 OR q>5 THEN stay
  55.        RETURN
  56.   
  57. notes: beginnote=65.405
  58.        FOR n=1 TO 12
  59.        note=beginnote
  60.        FOR o=1 TO 7
  61.        note(o,n)=note
  62.        note=note*2
  63.        NEXT o
  64.        beginnote=beginnote*(2^(1/12))
  65.        NEXT n
  66.        FOR o=1 TO 7
  67.        note (o,13)=32767
  68.        NEXT o
  69.        RETURN
  70.        
  71. init: DIM note(7,13)
  72.       SCREEN 1,640,200,3,2
  73.       WINDOW 2,"JUKEBOX",(0,0)-(607,185),15,1
  74.       WAVE 0,SIN
  75.       WAVE 1,SIN
  76.       n$="CDEFGAB#-PO) "
  77.       RETURN
  78.       
  79. tune1: DATA "O3G8F8E8- F8G8G8G8P8"
  80.        DATA "F8F8F4G8B8- B4- G8F8E8- F8G8"
  81.        DATA "G8G8G8F8F8G8F8E8- "
  82.        DATA "*"
  83. tune2: DATA "O3F8GSF8D4F8GSF8D4"      
  84.        DATA "O4C4C8O3A4B4- B8- F4"
  85.        DATA "G4G8B8- ASG8F8GSF8D4"
  86.        DATA "*"
  87. tune3: DATA "O3DSDSDSPSDSDSDSPSDSDS"          
  88.        DATA "G8A8B8DSDSDSPSDSDSDSPS"
  89.        DATA "BSBSA8G8- D8DSDSPSDSDSDS"
  90.        DATA "PSDSDSG8A8B8PSGSO4D4P8O3"
  91.        DATA "G8B8G8"
  92.        DATA "*"
  93. tune4: DATA "O4G4G4E8E4G4G4D8D4E4F4G4"
  94.        DATA "A4B4G2G4G4E8E4G4G4D8D4O4"
  95.        DATA "D4C4# D4E4O3A4O4D2O3G4O4E4"
  96.        DATA "E8D4C4C4O3B8B4O4C4D4O3B4A4"
  97.        DATA "G4O4C2"
  98.        DATA "*"
  99. tune5: DATA "O4G4G4A4F4# G8A4B4B4O4C4O3B4"
  100.        DATA "A8G4A4G4F4# O4D4D4D4D4C8O3"
  101.        DATA "B4O4C4C4C4C4O3B8A4B4O4C8O3"
  102.        DATA "B8A8G8B4O4C8D4E8C8O3B4A4G2"
  103.        DATA "*"
  104.        
  105.